package com.yibo.user.service;

import com.yibo.db.helper.QueryFilter;
import com.yibo.db.user.entity.UserInfo;
import com.yibo.user.object.RegisterUser;
import com.yibo.user.object.UpUser;
import com.yibo.user.object.YBUser;

import java.util.List;

/**
 * 用户相关接口
 *
 * @author zhanglei
 */
public interface UserService {

    /**
     * 登陆
     *
     * @param userId     用户ID
     * @param password   密码
     * @return           登陆用户
     */
    YBUser loginByPassword(String userId, String password);


    /**
     * 通过电话 以及验证码登陆
     *
     * @param phone      手机电话
     * @param checkWord  验证码
     * @return           用户
     */
    YBUser  loginByPhone(String phone,String checkWord);


    /**
     * 通过邮箱 以及验证码登陆
     *
     * @param email         邮箱
     * @param checkWord     验证码
     * @return              用户
     */
    YBUser  loginByEmail(String email,String checkWord);


    /**
     * 查询正在登陆的用户 通过token
     *
     * @return  正在登陆的用户
     */
    YBUser  queryLoginUser();


    /**
     * 退出登录
     *
     * @return  退出结果
     */
    int    loginOut();



    /**
     * 通过email 和 验证码  以及新密码  重置密码
     *
     * @param email          邮箱
     * @param checkWord      验证码
     * @param password      新密码
     * @return           重置结果 1成功 -1失败
     */
    int   reSetPasswordByEmail(String email,String checkWord,String password);


    /**
     * 通过电话号码  验证码  以及新密码  重置密码
     *
     * @param phone         电话号码
     * @param checkWord     验证码
     * @param password      新密码
     * @return              重置结果 1成功 2失败
     */
    int   reSetPasswordByPhone(String phone,String checkWord,String password);


    /**
     * 注册新用户
     *
     * @param user   用户信息
     * @return     注册结果  1成功  -1失败
     */
    int   register(RegisterUser user);


    /**
     * 通过用户ID 拉黑用户  将用户状态更新
     *
     * @param userId  用户ID
     * @return       拉黑结果  1成功 -1失败
     */
    int   pullBack(String userId);


    /**
     * 删除用户
     *
     * @param userId  用户ID
     * @return   删除结果  1成功  -1失败
     */
    int   remove(String userId);


    /**
     * 更新用户信息
     *
     * @param user   用户信息
     * @return   更新结果  1成功 -1失败
     */
    int   updateUser(UpUser user);


    /**
     * 分页过滤查询用户信息
     *
     * @param queryFilter  分页条件
     * @return       查询结果
     */
    QueryFilter<List<UserInfo>> queryUserList(QueryFilter queryFilter);



}
